package duppentity;

import com.google.gson.JsonObject;
import duppentity.annotations.Dupp;
import duppentity.annotations.Param;

import java.util.List;

public interface CouponDupp {

    @Dupp("mng.buCoupon.getList")
    JsonObject getCouponList(@Param("name") String name,
                                @Param("type") Integer type,
                                @Param("use") Integer use,
                                @Param("dispatchType") Integer dispatchType,
                                @Param("offset") Integer offset,
                                @Param("count") Integer count);

    @Dupp("buCoupon.get")
    JsonObject getCoupon(@Param("id") Long id);


    @Dupp("buCoupon.create")
    JsonObject addCoupon(@Param("sessionId")String sessionId,
                          @Param("userId")Long userId,
                          @Param("name")String name,
                          @Param("totalCount")Integer totalCount,
                          @Param("type")Integer type,
                          @Param("val")Integer val,
                          @Param("use")Integer use,
                          @Param("limit")Integer limit,
                          @Param("validType")Integer validType,
                          @Param("validDay")Integer validDay,
                          @Param("startTime")String startTime,
                          @Param("endTime")String endTime,
                          @Param("dispatchType")Integer dispatchType,
                          @Param("createBy")Long createBy);


    @Dupp("buCoupon.update")
    JsonObject editCoupon(@Param("sessionId")String sessionId,
                         @Param("userId")Long userId,
                          @Param("id")Long id,
                         @Param("name")String name,
                         @Param("totalCount")Integer totalCount,
                         @Param("modifyBy")Long modifyBy);


    /**
     * 更新优惠券为失效
     * @param sessionId
     * @param userId
     * @param invalid
     * @param modifyBy
     * @return
     */
    @Dupp("buCoupon.updateInValid")
    JsonObject updateInvalid(@Param("sessionId")String sessionId,
                         @Param("userId")Long userId,
                         @Param("id")Long id,
                         @Param("invalid")Integer invalid,
                         @Param("modifyBy")Long modifyBy);


    /**
     * 派券到用户
     * @param sessionId
     * @param userId 后台管理员
     * @param couponId 优惠券id
     * @param getUserIds 领券用户ids
     * @param modifyBy
     * @return
     */
    @Dupp("mng.buCoupon.dispatch")
    JsonObject saveDispatchUser(@Param("sessionId")String sessionId,
                                @Param("userId")Long userId,
                                @Param("id")Long couponId,
                                @Param("getUserIds") List<Long> getUserIds,
                             @Param("modifyBy")Long modifyBy);


    /**
     *
     * @param userId
     * @param dispatchUserId
     * @param startCreateTime
     * @param endCreateTime
     * @param startUseTime
     * @param endUseTime
     * @param offset
     * @param count
     * @return
     */
    @Dupp("mng.buCouponUser.getList")
    JsonObject getCouponUserList(@Param("userId") Long userId,
                              @Param("mobile")String mobile,
                             @Param("couponId")Long couponId,
                             @Param("dispatchUserId") Long dispatchUserId,
                             @Param("startCreateTime") String startCreateTime,
                             @Param("endCreateTime") String endCreateTime,
                                @Param("startUseTime") String startUseTime,
                                @Param("endUseTime") String endUseTime,
                             @Param("offset") Integer offset,
                             @Param("count") Integer count);

}
